iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
自我挑戰組

ESP32 Micropython 從入門到實用系列 第 4

04.更新開發板的 Micropython 韌體(上)

  • 分享至 

  • xImage
  •  

昨天提到 BPI-picoW-S3 開發板預載了 Adafruit 的 CircuitPython,雖然 CircuitPython 源自於 Micropython , 而且 Python 的直譯引擎也是相同的,但是對於板子週邊設備的使用方式、程式庫、模組等等,並不全然相同,爲了避免學習的複雜化,我們先專注在 Micropython。

然而,這並非代表 CircuitPython 比較差,相反的,因爲 Adafruit 官方的支持,在各種感測器的驅動、教學文件、開發板的易用性等等,我個人覺得都優於原來的 Micropython. 也正因爲如此,移植板子到 CircuitPython 會比較有難度。前幾年,只有能支援 UF2 bootloader (稍後會介紹) 的板子,才能有機會跑 CircuitPython. 因此能支援 ESP 晶片的類型,從 S2、S3 才進來,到了 C3 晶片出來,CircuitPython 才又開始支援非 UF2 bootloader 的板子,例如,早期的 ESP32 又重新開始支援。我們以後有機會再專文探討 CircuitPython。

因此,我們今天更新開發板 Micropython 韌體,就以 BPI-picoW-S3 爲例。

UF2 bootloader

有關 bootloader 的解釋,您可以參考https://en.wikipedia.org/wiki/Bootloader

有關 UF2 ,您也可以參考http://github.com/microsoft/uf2 , 我引用開頭片段如下:

USB Flashing Format (UF2)

UF2 is a file format, developed by Microsoft for PXT (also known as Microsoft MakeCode), that is particularly suitable for flashing microcontrollers over MSC (Mass Storage Class; aka removable flash drive).

For a more friendly explanation, check out this blog post. Also, take a look at the list of implementations at the bottom of this document.

所以我們可以這樣理解,UF2 bootloader 是一個 bootloader (有點廢話!),它支援 微軟所提出的 UF2 檔案格式,並且可以通過 USB MSC 來燒錄韌體(包含 bootloader 本身或應用軟體)。有點文縐縐的,簡單的情境如下,將開發板插入個人電腦的 USB port, 在電腦端可以看到一個新增的 USB 碟,我們要燒錄的文檔,非常簡單的拖移到那個 USB 碟,此簡單的 copy 動作,就可以燒錄韌體,這省去很多初學者的困擾與麻煩!

如果您有 BBC Microbit 的使用經驗,應該覺得很熟悉,沒錯,Microbit 的 bootloader 是一個支援 UF2 的 bootloader。同樣也是可以跑 Micropython 的 RPI-pico 開發板(使用RP2040晶片),其 bootloader 也是支援 UF2.

進入到 UF2 bootloader 模式

我們把 BPI-picoW-S3 插入個人電腦,雙擊一下 Reset 按鈕(板子上就只有那一個白色按鈕),雙擊的速度大約是 0.5 ~ 1 秒鐘左右,您可實驗感受一下,太快或太慢則進不了 UF2 bootloader 模式。 這時在個人電腦得到一個 USB 碟如下:
https://ithelp.ithome.com.tw/upload/images/20230919/20140037JCJAMEoU8B.png
在這裡的 USB 碟是 UF2BOOT(F:), 不同的電腦可能會有不同的磁碟代號。

我們用 notepad 打開 INFO_UF2.TXT

TinyUF2 Bootloader 0.12.3 - tinyusb (0.12.0-203-ga4cfd1c69)
Model: BananaPi BPI-PicoW-S3
Board-ID: ESP32S3-BPI-PicoW-S3
Date: Feb 2 2023

我們可以看到 UF2 bootloader 的版本是 0.12.3

接下來,我們到 CircuitPython BPI-picoW-S3 的下載頁面:https://circuitpython.org/board/bpi_picow_s3/
畫面往下捲到最底,如下:
https://ithelp.ithome.com.tw/upload/images/20230919/201400377DORME95E8.png

點擊 DOWNLOAD BOOTLOADER.ZIP,下載 BPI-picoW-S3 專用的 UF2 bootloader

我們解開 BOOTLOADER.ZIP
https://ithelp.ithome.com.tw/upload/images/20230919/20140037UAHf0JAiqI.png

更新 UF2 bootloader

將圖片中的 update-tinyuf2.uf2 檔案拉到板子的 USB 碟 (這裡爲 F: 碟),就完成 bootloader的更新了。

查看 UF2 bootloader 是否更新完成

一樣雙擊 Reset 進入 UF2 bootloader 模式,用 notepad 打開 INFO_UF2.TXT

TinyUF2 Bootloader 0.16.0 - tinyusb (0.15.0-566-gf1e006d09)
Model: BananaPi BPI-PicoW-S3
Board-ID: ESP32S3-BPI-PicoW-S3
Date: Jul 25 2023
Flash Size: 0x00200000 bytes

我們發現 UF2 bootloader 已經更新到 0.16.0 了,這樣的燒錄是不是很簡單!

用 UF2 bootloader 燒錄 Micropython 韌體

Micropython.org 官網下載適合的韌體:
https://ithelp.ithome.com.tw/upload/images/20230919/20140037ROHIVMpYRv.png

  • 點擊來下載最新的 .uf2 韌體
  • 雙擊 Reset 將板子進入 bootloader 模式
  • 將下載的檔案拉到板子的 USB 碟,等待檔案 copy 完成

這樣就簡簡單單的將 Micropython 韌體燒錄到開發板上。

驗證燒錄是否成功

打開昨天安裝好的 Thonny IDE, 直譯器選擇 Micropython(ESP32)
https://ithelp.ithome.com.tw/upload/images/20230919/20140037yYCvu1DOXe.png

可以看出,Micropython 韌體已經更新完成

若是您已是 Python 老鳥,並且已經在某個 Python 虛擬環境中安裝了 mpremote 套件模組,您可以打開那個虛擬環境的 win11 cmd 模式,然後直接執行 mpremote 即可

(base) PS C:\Users\ts> mpremote.exe
Connected to MicroPython at COM9
Use Ctrl-] or Ctrl-x to exit this shell

這表示 mpremote 終端已經連上開發板,我們可以按一下 “Enter” 鍵,則會出現 >>> REPL 命令提示符號,我們可以按 CTRL-D 執行 soft reboot , 過程如下:

(base) PS C:\Users\ts> mpremote.exe
Connected to MicroPython at COM9
Use Ctrl-] or Ctrl-x to exit this shell

>>>
MPY: soft reboot
MicroPython v1.20.0-475-g174bb28d8 on 2023-09-14; Generic ESP32S3 module with ESP32S3
Type "help()" for more information.
>>>

上一篇
03.連接到 ESP32 開發板
下一篇
05.更新開發板的 Micropython 韌體(中)
系列文
ESP32 Micropython 從入門到實用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言